<?php
/**
 * 商品规格模型
 * User: ws
 * Date: 2018/8/7
 * Time: 16:47
 */

namespace app\admin\model;
use think\Model;
use think\Db;
class Spec extends Model
{

    function Item()
    {
        return $this->hasMany('SpecItem', 'spec_id', 'spec_id');
    }


    function add($params){
        $result = $this->isUpdate(false)->allowField(true)->save($params);
        if($result){
            return $this->spec_id;
        }else{
            return false;
        }
    }

    function edit($params){
        $result = $this->isUpdate(true)->allowField(true)->save($params);
        if($result){
            return true;
        }else{
            return false;
        }
    }



    public function afterSave($id,$specitem)
    {
        $model = model('SpecItem');
        $post_items = explode(PHP_EOL, $specitem);

        foreach ($post_items as $key => $val)  // 去除空格
        {
            $val = str_replace('_', '', $val); // 替换特殊字符
            $val = str_replace('@', '', $val); // 替换特殊字符

            $val = trim($val);
            if(empty($val))
                unset($post_items[$key]);
            else
                $post_items[$key] = $val;
        }
        $db_items = $model->where("spec_id = $id")->column('item_id,spec_item');

        // 两边 比较两次

        /* 提交过来的 跟数据库中比较 不存在 插入*/
        foreach($post_items as $key => $val)
        {
            if(!in_array($val, $db_items))
                $dataList[] = array('spec_id'=>$id,'spec_item'=>$val);
        }
        // 批量添加数据
        $dataList && $model->insertAll($dataList);

        /* 数据库中的 跟提交过来的比较 不存在删除*/
        foreach($db_items as $key => $val)
        {
            if(!in_array($val, $post_items))
            {
                //  SELECT * FROM `tp_spec_goods_price` WHERE `key` REGEXP '^11_' OR `key` REGEXP '_13_' OR `key` REGEXP '_21$'
                //M("SpecGoodsPrice")->where("`key` REGEXP '^{$key}_' OR `key` REGEXP '_{$key}_' OR `key` REGEXP '_{$key}$' or `key` = '{$key}'")->delete(); // 删除规格项价格表
                Db::name("spec_item")->where('item_id='.$key)->delete(); // 删除规格项
            }
        }
    }



}